import BASE_URL from './env.js' //引入接口共用地址
const request = (options) => {
    return new Promise((resolve, reject) => {
        if (!options.url) reject("未配置请求地址")
        // 设置请求头
        const header = {
            "Content-Type": 'application/x-www-form-urlencoded',
            ...options.header // 可以传入额外的请求头参数
        }
        if (!options.url.split("/").includes("login") && !options.url.split("/").includes("register")) {
            // 获取用户令牌
            let token = uni.getStorageSync('token');
            if (!token) uni.navigateTo({url: '/pages/login/login'})
            header["Authorization"] = token
        }
        for(let key in options.data) {
            if(options.data[key] === undefined || options.data[key] === null || options.data[key] === '') delete options.data[key]
        }
        // ⭐在发送请求之前执行拦截操作
        uni.request({
            url: BASE_URL + options.url, //接收请求的API
            method: options.method || 'GET', //接收请求的方式,如果不传默认为GET
            data: options.data || {}, //接收请求的data,不传默认为空
            header: header, //接收请求的header
            success(res) {
                // ⭐在这里处理接收到响应后处理响应数据
                const result = res.data
                if(result.code === 1) {
                    resolve(result.data) // 使用resolve将数据传递出去
                } else if(result.code === 401) {
                    uni.navigateTo({url: '/pages/login/login'})
                } else if(result.code === 0) {
                    uni.showToast({title: result?.msg || "操作失败", icon: 'none', duration: 3000})
                    reject(result?.msg)
                }
            },
            fail: (err) => {
                uni.showToast({title: `接口-${options.url}请求失败`, icon: 'none', duration: 2000})
                reject(err)
            }
        })
    })
}

export default request;
